W1. Архитектура компьютера, принципы CPU, иерархия памяти, платы FPGA
1. Краткое содержание
1.1 Что такое компьютер?
Компьютер — это электронная машина, предназначенная для автоматического выполнения последовательности арифметических или логических операций по заданной программе. Он обрабатывает входные данные (input data) и выдаёт результат (output result). В основе работы лежит обработка двоичных данных — цепочек нулей и единиц: вход преобразуется в двоичный выход согласно заранее заданной последовательности команд.
1.2 Стек решения задачи
Решение задачи на компьютере раскладывается на несколько уровней абстракции — от физического мира до прикладной программы. Это часто изображают как стек.
- Задача (Problem to Solve): цель на высоком уровне.
- Алгоритм и структуры данных (Algorithm + Data Structures): концептуальное решение.
- Пользовательская программа (User Program): реализация на языке высокого уровня (например, C++, Python).
- Системные программы (System Programs): ОС и компиляторы, переводящие программу пользователя в машинные инструкции.
- Архитектура набора команд процессора (ISA, Instruction Set Architecture): конкретный набор низкоуровневых команд, которые может выполнять аппаратура. Это интерфейс между hardware и software.
- Микроархитектура (Microarchitecture): конкретная реализация ISA в железе (как устроены и соединены узлы CPU).
- Логические схемы (Logic Circuits): базовые блоки вроде вентилей AND и OR, реализующие микроархитектуру.
- Электроны, фотоны и т.д. (Electrons, Photons, etc.): физика, на которой держатся схемы.
Архитектура компьютера (computer architecture) изучает уровни от ISA вниз до логических схем, включая взаимодействие с системным ПО.

1.3 Что такое архитектура компьютера?
Computer Architecture — область информатики и инженерии, которая охватывает три главных направления:
- Организация аппаратуры компьютерных систем: как устроены и связаны CPU, память и устройства ввода-вывода (I/O).
- Принципы взаимодействия аппаратуры и ПО: правила и способы, которыми программа управляет железом, прежде всего через набор команд.
- Аспекты, связанные с производительностью: анализ и проектирование систем с упором на скорость, энергоэффективность и стоимость.
Изучение архитектуры помогает проектировать эффективное железо, писать быстрый софт и подстраивать вычислительные системы под конкретные задачи.
1.4 Основные компоненты компьютера
Современная архитектура строится вокруг нескольких ключевых взаимодействующих частей.
1.4.1 CPU (Central Processing Unit)
«Мозг» компьютера — CPU выполняет команды программы. Это сложная электрическая схема с несколькими важными узлами:
- Control Unit (CU) — блок управления: выбирает команды из памяти, декодирует их и координирует остальные части.
- Arithmetic-Logic Unit (ALU) — арифметико-логическое устройство: арифметика (сложение, вычитание и т.д.) и логика (AND, OR и т.п.).
- Registers — регистры: небольшое число очень быстрых ячеек памяти внутри CPU; в них держатся данные, с которыми идёт активная работа (аргументы ALU или результат).
1.4.2 Принцип работы процессора
Процессор получает электрические сигналы на входных выводах (input pins) и выдаёт результат на выходных (output pins). На входе, в частности:
- Instruction Code — двоичный код операции (например,
0для логического OR,1для AND). - Input Arguments — данные, над которыми выполняется операция.
Вместе код команды и аргументы образуют машинную инструкцию (machine instruction) (например, двоичная строка 010 может означать «OR для значений 1 и 0»).
1.4.3 Системная память (RAM)
Random Access Memory (RAM) — основное рабочее пространство: здесь хранятся команды программы и данные для быстрого доступа CPU. RAM volatile — энергозависимая: при отключении питания содержимое теряется.
1.4.4 Устройства хранения (Storage Devices)
Долговременное non-volatile хранение ОС, приложений и файлов (SSD, HDD). Для выполнения данные подгружаются из хранилища в RAM.
1.4.5 Устройства ввода-вывода (I/O)
Периферия: клавиатура, монитор, принтер, сетевые интерфейсы и т.д.
1.4.6 Шина связи (Communication Bus)
Набор электрических путей между компонентами. Скорость шины сильно влияет на производительность системы. Большие задержки при обмене CPU и памяти приводят к проблеме memory wall (memory wall problem) — ключевому ограничению современных машин.
1.5 Иерархия памяти
Чтобы сбалансировать скорость, стоимость и объём, память организуют иерархически; данные двигаются между уровнями в зависимости от частоты обращений CPU.
- Регистры (внутри CPU): самый быстрый доступ (<1 нс), наименьший объём (сотни байт).
- Кэш CPU (L1, L2, L3): очень быстрая память на кристалле или рядом с CPU; хранит копии часто используемых данных из RAM.
- L1 Cache: в каждом ядре, самый быстрый и маленький (десятки килобайт).
- L2 Cache: медленнее L1, но больше.
- L3 Cache (LLC — Last Level Cache): общий для ядер, самый медленный и крупный уровень кэша (мегабайты).
- Системная память (RAM): гигабайты, но существенно медленнее кэша.
- Накопители (SSD/HDD): терабайты, самый медленный доступ.

1.6 Архитектуры CPU и многоядерность
Проект CPU задаётся его ISA (Instruction Set Architecture).
1.6.1 Широко известные архитектуры
- Intel x86 / AMD64: доминирует на десктопах и серверах (CISC — Complex Instruction Set Computer).
- ARM: мобильные и встраиваемые системы (RISC — Reduced Instruction Set Computer).
- RISC-V: открытый современный стандарт RISC.
- Также упоминаются Baikal и Elbrus.
1.6.2 Многоядерные системы
Современные CPU — multicore processors: на одном кристалле несколько независимых вычислительных блоков (cores). У каждого ядра свои ALU, CU и обычно L1, тогда как L3 и основная память часто разделяются. Это даёт параллельное выполнение задач, но усложняет scheduling — планирование работы по ядрам.
1.7 Процессоры и FPGA
Обычный CPU — general-purpose processor с фиксированной схемой. FPGA (Field-Programmable Gate Array) — ИС с решёткой настраиваемых логических блоков, которую пользователь может перепрограммировать после изготовления.
1.7.1 Ключевые отличия
- Программируемость: у CPU железо фиксировано, исполняется софт; у FPGA переконфигурируется сама аппаратная схема.
- Набор команд: у CPU фиксированный instruction set производителя; у FPGA «встроенного» набора команд нет — проектируются цифровые схемы напрямую.
- Скорость вычислений: для общих задач CPU оптимизирован; для узкоспециализированных параллельных задач заказная логика на FPGA может быть существенно быстрее.
- Потребление: FPGA обычно прожорливее CPU на ту же задачу из‑за программируемой природы.
- Стоимость: FPGA в среднем дороже массовых CPU.
1.7.2 Типичные применения FPGA
Прототипирование процессоров, высокочастотный трейдинг, сигнальная обработка в реальном времени и другие задачи с массовым параллелизмом и низкой задержкой.
1.8 Программирование FPGA и учебные платы
FPGA программируют на HDL (Hardware Description Language) — например, Verilog или VHDL. Эти языки описывают структуру аппаратных схем, а не последовательность команд как в обычном ПО. Средство вроде Intel Quartus Prime Lite синтезирует HDL в конфигурационный файл, который загружается в FPGA.
Учебные платы вроде DE10-Lite MAX 10 содержат FPGA и набор периферии:
- Светодиоды и переключатели
- Кнопки
- Семисегментные индикаторы
- Выход VGA
- Акселерометр (G-Sensor)
- Выводы GPIO (General-Purpose Input/Output)
2. Определения
- Computer: электронное устройство, обрабатывающее данные путём выполнения последовательности команд, заданных программой.
- Computer Architecture: проектирование и организация компьютерной системы — компоненты, связи и интерфейс «железо–ПО» (набор команд).
- CPU (Central Processing Unit): узел, выполняющий команды программы, арифметику, логику и управление.
- ALU (Arithmetic-Logic Unit): цифровая схема в CPU для арифметики и побитовой логики.
- CU (Control Unit): часть CPU, интерпретирующая команды и формирующая управляющие сигналы.
- Register: маленькая сверхбыстрая ячейка памяти внутри CPU.
- Instruction Set Architecture (ISA): набор команд, которые может выполнять CPU; интерфейс между аппаратурой и программным уровнем.
- System Memory (RAM): энергозависимая память для активных данных и машинного кода.
- CPU Cache: быстрая энергозависимая память с копиями часто используемых данных из основной памяти.
- Memory Hierarchy: многоуровневая структура памяти и хранилищ, балансирующая скорость, стоимость и объём.
- FPGA (Field-Programmable Gate Array): ИС с настраиваемыми логическими блоками и соединениями, перепрограммируемыми пользователем после выпуска.
- Verilog HDL: язык описания аппаратуры для моделирования и проектирования цифровых систем.
- Multicore Processor: один кристалл CPU с двумя и более независимыми ядрами (cores).